Networks are widely used to transfer voice, video, and data between various network devices such as telephones, televisions, and computers. Data transmitted through a network is typically segmented into finite portions. Under some network protocols, data is segmented into fixed-length cells. For example, asynchronous transfer mode (ATM) protocol requires data to be segmented into 53-byte cells, with 5 bytes of each cell designated for a header and 48 bytes of each cell designated for payload. Other network protocols, such as ethernet, allow data to be segmented into variable-length packets. For example, an ethernet packet has a 14-byte header and a payload size that can vary from 64 bytes to 1,500 bytes.
Transmitting fixed-length cells, such as ATM cells, through a network device such as a switch is made easier by the fact that each cell is the same size and by the fact that each cell can be switched independently of any other cell, even if a group of cells is from the same source and headed to the same destination. Because ATM cells are all of a fixed length, the time for propagation of each cell through a switch is predictable. Knowing the time required for an ATM cell to propagate through a switch makes it easy to arrange for cells to pass through the switch one after another in a pipelined fashion, where pipelined or pipelining are terms used to describe a group of data units that are transferred over a single data path in series with no gap between the data units.
In contrast to protocols that require fixed-length data segments, protocols such as ethernet that include variable-length data segments are more difficult to pipeline data within a switch because the time required for the segment to pass through the switch is unpredictable. In order to make switching of variable-length packets more manageable, variable-length packets can be further segmented into fixed-length switching blocks that pass through the crossbar of the switch in a fixed amount of time. The fixed-length switching blocks have a header portion and a payload portion and the number of fixed-length switching blocks per packet is directly related to the size of the packet. The fixed-length switching blocks are only used internally by the switch and the switching blocks related to a particular packet are typically forwarded through the switch one after another.
Since the number of switching blocks for a particular packet depends on the size of the packet, the time required to forward variable-length packets through a switch varies. The varying time required to forward a packet through a switch makes it more difficult to pipeline one variable-length packet after another through a switch. In addition to the timing problems created by variable-length packets, various system timing delays related to, for example, scheduling arbitration and the retrieval of packets from buffers, increase the difficulty of determining when to start the process of supplying subsequent packets to a switch crossbar.
One example of a technique commonly used to pipeline variable-length packets through a switch involves providing multiple physical connections on a channel-by-channel basis between input buffers and the crossbar of a switch. Referring to FIG. 1, in a four-channel switch fabric, there are four connections between each packet processor 2, 4, 6, and 8 and a crossbar 10. For example, there may be separate input and output connections between the packet processors and the crossbar for transmitting the payload portion of a switching block and there may be separate input and output connections between the packet processors and the crossbar for transmitting the request and response portions of the switching block header. While the described technique may work well for its intended purpose, requiring four physical connections for each switching channel increases the number of signal pins required on the crossbar integrated circuit (IC) and limits the number of signal pins that can be used for other functions.
Another example of a technique used to forward variable-length packets through a switch involves providing large buffers in the switch fabric, so that packets can be forwarded through the switch fabric one after another until the buffers are full, without regard to the availability of target output channels. While this technique works well for its intended purpose, again the additional buffers in the switch fabric occupy valuable space on the integrated circuits that make up the switch.
In view of the efficiencies gained by pipelining variable-length packets and the added complexity of prior art solutions, what is needed is a method for communicating within a switch that accounts for timing delays and enables the pipelining of variable-length packets while requiring a minimum number of physical connections.